define(function () {
  /*
    options = {
      page: 0, //第几页
      perPage: 20 //每页个数
    }
   */
  function pagination($dom, cb, options) {

    var defaultConfig = {
      page: 0,
      perPage: 20
    }

    pageConfig = options || defaultConfig

    var pageNumber = new PageNumber({
      perpage: pageConfig.perPage
    })

    pageNumber.$dom.appendTo($('.pagination').html(''))
    pageNumber.pageCallback = function (newPageNum) {
      // console.log(newPageNum);
      if(newPageNum !== undefined) {
        pageConfig.page = newPageNum
      }
      cb(pageConfig, function (data) {
        if(!data.list.length) {
          pageNumber.$dom.hide()
        } else {
          pageNumber.$dom.show()
        }
        pageNumber.data.max = Math.ceil(data.pager.total / pageConfig.perPage) - 1
        pageNumber.update()
      });
    }

    function pageChange() {
      var startSn = pageConfig.page * pageConfig.perPage
      pageConfig.perPage = parseInt(pageNumber.perpageInput.value())
      pageConfig.page = Math.floor(startSn / pageConfig.perPage)
      pageNumber.goto(pageConfig.page)
    }

    pageNumber.perpageInput.$input.on('keyup', function (e) {
      if(e.keyCode == 13) {
        pageChange()
      }
    })

    pageNumber.$perpageBtn.on('click', function () {
      pageChange()
    })
    pageNumber.goto(0);
  }

  window.pagination = pagination
  return pagination
})
